Cloud computing can be generally defined as Internet-based computing in which computing resources are dynamically provisioned and allocated to client or user computers or other devices on-demand from a collection of resources available via the network (e.g., “the cloud”). Cloud computing resources, for example, may include any type of resource such as computing, storage, network devices, virtual machines (VMs), etc. For instance, resources may include service devices (firewalls, deep packet inspectors, traffic monitors, etc.), processing devices (brute force processing capability), storage devices (e.g., servers, network attached storages, storage area network devices), etc., and may be used for instantiation of VMs, databases, applications (Apps), etc.
Cloud computing is dynamically scalable and often virtualized resources are provided as a service to individuals, small groups, and companies. Cloud consumers request resources such as compute, storage, and virtualized network services such as firewalls and load-balancers to develop, test, or deploy their applications. The resources are generally requested on an as-needed basis or preplanned. Cloud providers on the other hand fulfill these customer requests using dedicated and shared physical or virtual resources in a cost effective way.